package cn.lecosa.spark
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD.rddToPairRDDFunctions


object  Average  {
  def main(args: Array[String]) {
 
    val conf = new SparkConf(); //创建SparkConf对象  设置spark参数
    conf.setAppName("wow,My First Spark App!"); //设置应用程序的名称，在spark程序运行的监控界面可以看到名称
    conf.setMaster("local[2]"); //此时，程序在本地运行，不需要安装spark集群
  
    val sc = new SparkContext(conf);

 
    val lines = sc.textFile("hdfs://cdh2:8020/testData/average/average.txt", 1); //path:文件路径    minPartitions：最小并行度的数量
//    val r1=lines.flatMap { line =>line.split("\n") }
    val r2= lines.filter { _.trim().length()>1 }.map { text =>{ (text.split(" ")(0) ,text.split(" ")(1).toInt )} }
//    val r3=r2.foreach { x => {println(x._1)}}
      val r3= r2.groupByKey().map(x=>{ 
        var  total =0;
        var cnt =0;
        for(x<-x._2){
          total=total+x;
          cnt=cnt+1;
        }
        var avg=total/cnt;
        (x._1,avg)
      })
//    r2.reduceByKey(func)
    
/*    r2.groupByKey().map(text=>{
      var sum=0;
      var num=0.0;
//      for(x<-text._2){
//        sum=sum+text._1.toInt;
//        num+=1
//      }
//     val avg=sum/num
//      val format=f"$avg%1.2f".toDouble
//      (text._1,format)
    }).collect()*/
    
//    val r3=r2.reduceByKey(_+_)
 
    println(r3.collect().mkString("---"));
    sc.stop();
  }
}